package com.lmz.project.redis.arithmetic.heapShed;

/**
 * 值传递和引用传递练习
 */
public class TransmitTest {
    public static void main(String[] args) {
        // int long byte short
        // char float double boolean
        //还有String 都是按值传递
        int a =10;
        f(a);
        System.out.println(a);

        //其他类型按照引用传递
        int[] c={1,2,3,4,5}; //在堆中开辟一段空间 存放 {1,2,3,4,5}  在栈中声明一个变量c c指向队中的值
        g3(c); //传递的其实是c的备份c' 将c'置null 不会影响c[0]的值
        System.out.println(c[0]); //打印结果还是1
        g4(c); //传递的其实是c的备份c' 但是通过c'找到内存中的值，修改，就会影响到c[0]的值
        System.out.println(c[0]);
    }





    public static  void f(int a){
        a =11;
    }

    public static void g3(int[] c){
        c = null;
    }

    public static void g4(int[] c){
        c[0] = 100;
    }
}
